/**
 * 为代码块添加复制按钮和语言标识
 * 这个函数应该在组件挂载后调用
 */
export function addCopyButtonsToCodeBlocks(): void {
  // 获取所有代码块
  const codeBlocks = document.querySelectorAll('.markdown-preview pre');
  
  // 为每个代码块添加复制按钮
  codeBlocks.forEach((pre) => {
    // 检查是否已经有复制按钮
    if (pre.querySelector('.copy-button')) return;
    
    // 创建复制按钮
    const copyButton = document.createElement('button');
    copyButton.className = 'copy-button';
    copyButton.textContent = '复制';
    
    // 添加点击事件
    copyButton.addEventListener('click', () => {
      const code = pre.querySelector('code');
      if (code) {
        // 复制代码内容
        navigator.clipboard.writeText(code.textContent || '')
          .then(() => {
            // 复制成功，临时改变按钮文本
            copyButton.textContent = '已复制!';
            setTimeout(() => {
              copyButton.textContent = '复制';
            }, 2000);
          })
          .catch(err => {
            console.error('复制失败:', err);
            copyButton.textContent = '复制失败';
            setTimeout(() => {
              copyButton.textContent = '复制';
            }, 2000);
          });
      }
    });
    
    // 添加按钮到代码块
    pre.appendChild(copyButton);
    
    // 获取语言类名
    const codeElement = pre.querySelector('code');
    if (codeElement) {
      const classes = codeElement.className.split(' ');
      const languageClass = classes.find(cls => cls.startsWith('language-'));
      if (languageClass) {
        const language = languageClass.replace('language-', '');
        // 更新代码块的data-language属性，用于CSS ::after伪元素显示语言
        pre.setAttribute('data-language', language);
      }
    }
  });
}

/**
 * 移除代码块的复制按钮
 * 这个函数应该在组件卸载前调用
 */
export function removeCopyButtonsFromCodeBlocks(): void {
  const copyButtons = document.querySelectorAll('.copy-button');
  copyButtons.forEach(button => {
    button.removeEventListener('click', () => {});
    button.remove();
  });
} 